package com.example.blog.service;

import java.util.List;
import java.util.Map;

import com.example.blog.entity.Comment;
import com.example.blog.entity.Reply;

public interface CommentService {
    /**
     * 发表评论
     */
    Map<String, Object> addComment(Comment comment);
    
    /**
     * 回复评论
     */
    Map<String, Object> addReply(Reply reply);
    
    /**
     * 更新评论
     */
    boolean updateComment(Comment comment);
    
    /**
     * 更新回复
     */
    boolean updateReply(Reply reply);
    
    /**
     * 删除评论
     */
    boolean deleteComment(Integer commentId);
    
    /**
     * 删除回复
     */
    boolean deleteReply(Integer userId, Integer commentId);
    
    /**
     * 标记评论为用户删除
     */
    boolean markCommentAsDeletedByUser(Integer commentId);
    
    /**
     * 标记回复为用户删除
     */
    boolean markReplyAsDeletedByUser(Integer userId, Integer commentId);
    
    /**
     * 启用/禁用评论
     */
    boolean updateCommentStatus(Integer commentId, Boolean isDisabled);
    
    /**
     * 启用/禁用回复
     */
    boolean updateReplyStatus(Integer userId, Integer commentId, Boolean isDisabled);
    
    /**
     * 根据ID获取评论
     */
    Comment getCommentById(Integer commentId);
    
    /**
     * 根据用户ID和评论ID获取回复
     */
    Reply getReplyByUserIdAndCommentId(Integer userId, Integer commentId);
    
    /**
     * 获取博客的所有评论
     */
    List<Comment> getCommentsByBlogId(Integer blogId);
    
    /**
     * 获取博客的有效评论（未被禁用且未被用户删除）
     */
    List<Comment> getValidCommentsByBlogId(Integer blogId);
    
    /**
     * 获取评论的所有回复
     */
    List<Reply> getRepliesByCommentId(Integer commentId);
    
    /**
     * 获取评论的有效回复（未被禁用且未被用户删除）
     */
    List<Reply> getValidRepliesByCommentId(Integer commentId);
    
    /**
     * 获取用户的所有评论
     */
    List<Comment> getCommentsByUserId(Integer userId);
    
    /**
     * 获取用户的所有回复
     */
    List<Reply> getRepliesByUserId(Integer userId);
} 